﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Web.Mvc;

namespace ProjectBase.Core.Diagnostics
{
    [ContractClassFor(typeof(IReadFacade<,,>))]
    internal abstract class ReadFacade<TEntity, TID, TFilter> : IReadFacade<TEntity, TID, TFilter>
        where TEntity : class, IPersistentObjectWithTypedId<TID>
        where TFilter : class, IFilter<TID>
    {
        public IEnumerable<TEntity> Find(TFilter filter)
        {
            Contract.Requires(filter.Is(), "ReadFacade<T, TID, TFilter>, method Find(), parameter 'filter' cannot be null");
            throw new NotImplementedException();
        }

        public TFilter CreateNewFilter()
        {
            throw new NotImplementedException();
        }
        public string ValidationRulesToString(string validationType = null)
        {
            throw new NotImplementedException();
        }
        public TEntity GetById(TID id)
        {
            throw new NotImplementedException();
        }

        public TEntity CreateNew()
        {
            throw new NotImplementedException();
        }
        #region base notimplemented
        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        public bool BindFilter(TFilter filter
           , IValueProvider valueProvider
           , string prefix = null)
        {
            throw new NotImplementedException();
        }
        public bool BindFilter(TFilter filter
            , IValueProvider valueProvider
            , string prefix
            , IEnumerable<string> includeProperties
            , IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }
        #region IMessagesHolder Members

        public Messages Messages
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion
        #endregion base notimplemented
    }

    [ContractClassFor(typeof(IReadFacade<,>))]
    internal abstract class ReadFacade<TEntity, TID> : IReadFacade<TEntity, TID>
        where TEntity : class, IPersistentObjectWithTypedId<TID>
    {
        public TEntity GetById(TID id)
        {
            throw new NotImplementedException();
        }
        public TEntity CreateNew()
        {
            throw new NotImplementedException();
        }
        #region base notimplemented
        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        #region IMessagesHolder Members

        public Messages Messages
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion
        #endregion base notimplemented
    }
}
